/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniandes.patrones.beans;

import co.uniandes.patrones.entidades.AdministradorSolicitudes;
import co.uniandes.patrones.entidades.AdministradorUsuarios;
import co.uniandes.patrones.entidades.Cliente;
import co.uniandes.patrones.entidades.Vehiculo;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 *
 * @author alvar-go@uniandes.edu.co
 */
public class IngresarSolicitudBean {
    
    private final static String SOLICITUD_CORRECTA = "selecciontaller";
    
    private final static String SOLICITUD_INCORRECTA = "seleccionvehiculo";
    
    public final static String PLACA_SELECCIONADA = "placa";
    
    private final static String INICIO= "ingreso";
    
    private List<String> vehiculos;
    
    private String vehiculoSeleccionado, modelo, color, identificacion, estado;
    
    private Cliente clienteActual;

    public IngresarSolicitudBean() {
        vehiculos = new ArrayList<String>();
        cargarCarros();
    }

    public String getColor() {
        return color;
    }

    public String getModelo() {
        return modelo;
    }

    public String getVehiculoSeleccionado() {
        return vehiculoSeleccionado;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public void setVehiculos(List<String> vehiculos) {
        this.vehiculos = vehiculos;
    }

    public List<String> getVehiculos() {
        return vehiculos;
    }

    public void setVehiculoSeleccionado(String vehiculoSeleccionado) {
        this.vehiculoSeleccionado = vehiculoSeleccionado;
    }
    
     private void cargarCarros(){
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession sesion = (HttpSession) context.getExternalContext().getSession(false);
        if( sesion != null){
             AdministradorUsuarios ad = AdministradorUsuarios.getInstancia();
             clienteActual = (Cliente)ad.buscarUsuario((String)sesion.getAttribute(IngresoBean.SESION_LOGIN));
             List<String> plcs = clienteActual.darPlacas();
             vehiculos = new ArrayList<String>();
             AdministradorSolicitudes ads = AdministradorSolicitudes.getInstancia();
             for(int i = 0; i < plcs.size(); i++){
                 if(ads.darSolicitud(plcs.get(i)) == null){
                     vehiculos.add(plcs.get(i));
                 }
             }
             identificacion = clienteActual.getTipo() +":" + clienteActual.getLogin();
        }
    }

    public String getIdentificacion() {
        return identificacion;
    }

    public void setIdentificacion(String identificacion) {
        this.identificacion = identificacion;
    }

     public String terminarSesion(){
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession sesion = (HttpSession) context.getExternalContext().getSession(false);
        if(sesion != null){
            sesion.invalidate();
            return  INICIO;

        }
        return null;
    }
     
    public void verVehiculo(){
        if(vehiculoSeleccionado != null){
            Vehiculo v = clienteActual.darVehiculo(vehiculoSeleccionado);
            System.out.println("SELECIION =" + v);
            color = v.getColor();
            modelo = v.getModelo();
            estado = v.getEstado();
        }
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }
    
    public String solictarReparacion(){
        if(vehiculoSeleccionado != null){
            FacesContext context = FacesContext.getCurrentInstance();
            HttpSession sesion = (HttpSession) context.getExternalContext().getSession(false);
            if( sesion != null){
                 sesion.setAttribute(PLACA_SELECCIONADA, vehiculoSeleccionado);
            }
            return SOLICITUD_CORRECTA;
        }else{
            return SOLICITUD_INCORRECTA;
        }
    }
}